home *** CD-ROM | disk | FTP | other *** search
/ Light ROM 1 / LIGHT-ROM 1 (Amiga Library Services)(1994).iso / ffdisks / d970.lha / ADM / ARexx / SendMails.rexx < prev    next >
OS/2 REXX Batch file  |  1993-06-13  |  6KB  |  196 lines

  1.  
  2. /* $VER: SendMails.adm 1.0 (12.6.93)
  3.  
  4.    Written by Jan Geissler.
  5.  
  6.    Schreibt an alle, die eine EMail-Adresse angegeben haben, eine
  7.    EMail. (Mögliche Erweiterung: Nur an die, bei denen ein bestimmtes
  8.    Flag gesetzt ist)
  9.  
  10.    Hier werden das MessageSystem UMS sowie Befehle von "Stuntzis
  11.    UMS Tools" verwendet. Z-Netz-Mails werden bei diesem Script
  12.    via UUCP-Gate exportiert.
  13.  
  14.    Folgende "Formate" der EMail-Adressen werden von diesem Script
  15.    erkannt:
  16.  
  17.    Fido:                            Beispiel:
  18.    -----
  19.      FIDO=z:n/f.p                     FIDO=2:242/7.9
  20.      FIDO=z:n/f.p@Fidonet             FIDO=2:242/7.9@Fidonet
  21.      FIDO=realname@z:n/f.p            FIDO=Joe Fool@2:242/7.9
  22.      FIDO=realname@z:n/f.p@Fidonet    FIDO=Joe Fool@2:242/7.9@Fidonet
  23.      z:n/f.p@Fidonet                  2:242/7.9@Fidonet
  24.      realname@z:n/f.p@Fidonet         Joe Fool@2:242/7.9@Fidonet
  25.  
  26.    Anmerkungen:
  27.  
  28.    · Als "Realname" wird, wenn nicht angegeben, der Vor- und Zuname
  29.      der Adresse genommen.
  30.    · Ausgabeformat ist "z:n/f.p@Fidonet"
  31.  
  32.  
  33.    Z-Netz:                          Beispiel:
  34.    -------
  35.      ZER=NAME@SYSTEM.ZER              ZER=J.FOOBAR@FOOLS.ZER
  36.      NAME@SYSTEM.ZER                  J.FOOBAR@FOOLS.ZER
  37.  
  38.    Anmerkungen:
  39.  
  40.    · Als Realname wird der in der Adresse enthaltene Username
  41.      übernommen. (wie hier z.B. J.FOOBAR).
  42.    · In diesem Script werden Fido-Nachrichten über UUCP gegated,
  43.      d.h. es wird mit ZER.SUB.ORG per UMS2UUCP exportiert.
  44.  
  45.  
  46.    UUCP/UseNet:
  47.    ------------
  48.  
  49.      Alle Nachrichten, die _nicht_ in oben genannte Schemata passen,
  50.      werden von diesem Script als UUCP-Mails/News verschickt.
  51.  
  52. */
  53.  
  54. /*----------------------------------------------------------------------
  55.    HAUPTPROGRAMM: Adressen auslesen
  56. ----------------------------------------------------------------------*/
  57.  
  58. ADDRESS ADM.1                /* Dies entfernen, wenn von ADM gestartet */
  59.  
  60. OPTIONS RESULTS
  61.  
  62. ACTIVATEFIRST                /* Ersten Eintrag aktivieren */
  63. ADDRINMEM
  64. numAdr = RESULT              /* Anzahl der Einträge für Schleife */
  65.  
  66. DO FOR numAdr
  67.  
  68.     /* Flag-Abfrage: z.B. IF ADM.flags > 0 THEN DO */
  69.  
  70.        GETADDRESS ADM            /* Hole Adresse */
  71.  
  72.        txt = ADM.EMAIL1          /* Bearbeite EMail-Feld 1 */
  73.        CALL SendMail
  74.        txt = ADM.EMAIL2          /* Bearbeite EMail-Feld 2 */
  75.        CALL SendMail
  76.  
  77.     /* Flag-Abfrage: END  für IF ADM.flags ... THEN DO */
  78.  
  79.     ACTIVATENEXT              /* Nächste Adresse */
  80. END
  81.  
  82. EXIT                         /* Ende */
  83.  
  84.  
  85. /*----------------------------------------------------------------------
  86.    UNTERPROGRAMM: EMail schreiben
  87. ----------------------------------------------------------------------*/
  88.  
  89. SendMail:
  90.    msg = FALSE
  91.  
  92.    IF txt ~= "" THEN DO      /* Wenn überhaupt EMail-Text vorhanden */
  93.  
  94.       pos = POS("=",txt)     /* Wenn mit ZER=, FIDO= oder UUCP= ein- */
  95.                              /*                          getragen... */
  96.  
  97.       IF pos > 0 THEN DO     /* ... Netz herausfinden und von Adresse */
  98.          net = STRIP(SUBSTR(txt,1,pos-1))                  /* trennen */
  99.          adr = STRIP(SUBSTR(txt,pos+1,LENGTH(txt)-pos))
  100.       END
  101.       ELSE DO                /* andernfalls: Herausfinden, welches Netz */
  102.          adr = ""
  103.  
  104.          pos = POS("@Fidonet",txt)   /* Endung "@Fidonet"? */
  105.          IF pos>0 THEN DO
  106.             net = "FIDO"
  107.             adr = STRIP(txt)
  108.          END
  109.  
  110.          pos = POS(".ZER",txt)       /* Endung ".ZER"? */
  111.          IF pos=LENGTH(txt)-3 THEN DO
  112.             net = "ZER"
  113.             adr = STRIP(txt)
  114.          END
  115.  
  116.          IF adr="" THEN DO           /* Ansonsten UUCP */
  117.             net = "UUCP"
  118.             adr = STRIP(txt)
  119.          END
  120.  
  121.       END
  122.  
  123.       IF net="FIDO" THEN DO          /* FIDO: Realname vorhanden? */
  124.          pos = POS(":",adr)
  125.  
  126.                                      /* wenn nicht -> aus ADM-Adresse */
  127.          IF pos < 3 THEN DO
  128.             name = ADM.firstName ADM.lastName
  129.             IF POS("@Fidonet",adr) < 1 THEN adr = adr || "@Fidonet"
  130.          END
  131.          ELSE DO                     /* Sonst Namen herausschneiden */
  132.             pos  = POS("@",adr)
  133.             name = STRIP(SUBSTR(adr,1,pos-1))
  134.             adr  = STRIP(SUBSTR(adr,pos+1,LENGTH(txt)-pos-1)) || "@Fidonet"
  135.          END
  136.  
  137.          SAY "FIDONET: " name "--" adr
  138.          msg = TRUE
  139.       END
  140.  
  141.       IF net="ZER"  THEN DO         /* ZERBERUS: */
  142.          pos = POS("@",adr)
  143.          name = STRIP(SUBSTR(adr,1,pos-1)) /* NAME/ALIAS heraustrennen */
  144.          adr = adr || ".sub.org"           /* .sub.org anhängen */
  145.                                            /* für UUCP-Gate */
  146.          SAY "ZERBERUS:" name "--" adr
  147.  
  148.          msg = TRUE
  149.       END
  150.  
  151.       IF net="UUCP" THEN DO                /* UUCP= angegeben? */
  152.          name = STRIP(ADM.firstName ADM.lastName)
  153.          SAY "USENET:  " name "--" adr
  154.          msg = TRUE
  155.       END
  156.  
  157.       IF msg = FALSE THEN DO               /* Ansonsten: Nachricht ist UUCP */
  158.          name = STRIP(ADM.firstName ADM.lastName)
  159.          /* adr  = adr */
  160.       END
  161.  
  162.  
  163.       /* Message-Erzeugung:
  164.  
  165.          Das Script erstellt eine temporäre Datei, in der der Messagetext
  166.          und für "sumswrite" nötige Schlüsselwörter enthalten sind.
  167.          Danach wird "sumswrite" gestartet.
  168.  
  169.          Bei anderen Messagereadern muß der Teil geändert werden - je nach
  170.          Vorhandensein eines ARexx-Ports... aber außer UMS ist eh kaum ein
  171.          Programm für mehrere Netze geeignet... :)                         */
  172.  
  173.  
  174.       IF ~OPEN(datei,"ram:admtmpmsg","W") THEN DO   /* Ausgabedatei öffnen     */
  175.          SAY "Kann Ausgabedatei nicht öffnen!"
  176.          EXIT
  177.       END
  178.  
  179.       ok = WRITELN(datei,"ToName" name)
  180.       ok = WRITELN(datei,"ToPath" adr)
  181.       ok = WRITELN(datei,"Subject" "Hier Betreff einfügen")
  182.       ok = WRITELN(datei,"Organization" "Hier Origin einfügen")
  183.       ok = WRITELN(datei,"-----------------------------------------------")
  184.  
  185.       ok = WRITELN(datei,"Text")
  186.       ok = WRITELN(datei,"Text")
  187.  
  188.       ok = CLOSE(datei)                          /* Datei schließen */
  189.  
  190.       cmd = "sumswrite jan jg <ram:admtmpmsg"    /* SUMSWRITE starten */
  191.       ADDRESS COMMAND cmd
  192.  
  193.    END
  194.  
  195. RETURN
  196.